<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<script>
    //（1）匿名函数自调用。
    (
            function(){
                alert('1');
            }
    )();
    //(1-1)匿名函数的传参问题
    (
            function(name) {
                alert('hello' + name + '!');
            }
    )('sky');
    //(1-2)匿名函数的两种写法
    (function(){
        //...
    }());
    (function(){
        //...
    })();
    //(1-2)匿名函数：绝不产生全局变量。缺点：无法重复执行，除非放入循环中
    var result = (function(){
        //dosometing
        return something;//匿名函数虽然有返回值并不常见，但是也有应用
    }());
    //也可以这样写，但是不读到最后，不知道result到底是一个函数，还是一个函数调用
    var result = function() {
        //do something;
        return something;
    } ();
    //(1-3)内部（私有）函数
    function outer (param) {
        function inner (theinput) {
            return theinput*2;
        }
        return 'The result is' + inner(param);
    }
    //或者采用函数表达式来写
    var outer = function (param) {
        var inner = function (theinput) {
            return theinput * 2;
        };
        return 'The result is ' + inner(param);
    };
    outer(2);//'The result is 4'
    outer(8);//"The result is 16"
    inner(2);//ReferenceError:inner is not defined
    //内部私有函数确保了全局命名不冲突。确保了私有性，确保了我们只将想要暴露的函数暴露出去。



</script>
</body>
</html>